<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Untitled Document</title>
		<script type=text/javascript charset=utf-8>
			
			// 单体模式（singleton）
			// 1 简单单体模式
			/*
			var Singleton = {
				attr1: true , 
				attr2: 10 ,
				method1 : function(){
					alert('我是方法1');
				},
				method2 : function(){
					alert('我是方法2');
				}
			};
			*/
			//alert(Singleton.attr1);
			// 补充 ：划分命名空间 (区分代码) Ext.Manager.attr1 / method1
			/*
			var BHX = {};
			BHX.Singleton = {
				attr1: true , 
				attr2: 10 ,
				method1 : function(){
					alert('我是方法1');
				},
				method2 : function(){
					alert('我是方法2');
				}				
			};
			BHX.Singleton.method1();
			*/
			
			// 2 借用闭包创建单体 ：闭包主要的目地 保护数据 
			// 命名空间
			var BHX = {} ;
			BHX.Singleton = (function(){
				// 添加自己的私有成员
				var a1 = true ;
				var a2 = 10  ;
				var f1 = function(){
					alert('f1');
				}
				var f2 = function(){
					alert('f2');
				}				
				// 把块级作用域里的执行结果赋值类我的单体对象
				return {
						attr1: a1 , 
						attr2: a2 ,
						method1 : function(){
							return f1();
						},
						method2 : function(){
							return f2();
						}						
				} ;
			})();
			
			alert(BHX.Singleton.attr1);
			BHX.Singleton.method1();
			
			
			
			
		</script>
	</head>
	<body>
	</body>
</html>
